package com.zyb.warehouse.mapper;

import com.zyb.warehouse.dto.Page;
import com.zyb.warehouse.dto.vo.StoreCountVo;
import com.zyb.warehouse.entity.Store;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Description:仓库持久层接口
 */
@Mapper
public interface StoreMapper {

    /**
     * 查询所有仓库
     *
     * @return
     */
    @Select("select * from store")
    List<Store> selectAllStore();

    /**
     * 查询每个仓库存储的商品的数量
     *
     * @return
     */
    List<StoreCountVo> selectStoreProductTotal();

    /**
     * 查询仓库总记录数
     *
     * @param store
     * @return
     */
    Integer selectStoreTotal(Store store);

    /**
     * 分页查询仓库
     *
     * @param page
     * @param store
     * @return
     */
    List<Store> pageStore(@Param("page") Page page, @Param("store") Store store);

    /**
     * 查询仓库编号是否重复
     *
     * @param storeNum
     * @return
     */
    @Select("select * from store where store_num=#{storeNum}")
    Store selectStoreByNum(String storeNum);

    /**
     * 添加仓库
     *
     * @param store
     * @return
     */
    Integer addStore(Store store);

    /**
     * 修改仓库
     *
     * @param store
     * @return
     */
    Integer updateStore(Store store);

    /**
     * 删除仓库
     *
     * @param storeId
     * @return
     */
    @Delete("delete from store where store_id=#{storeId}")
    Integer deleteStore(Integer storeId);
}
